Подпрограммы для создания двумерных динамических массивов

function Matr<T>(m,n: integer; params data: array of T): array [,] of T;
        Возвращает двумерный массив размера m x n, заполненный указанными значениями по строкам
function MatrFill<T>(m, n: integer; x: T): array [,] of T;
        Возвращает двумерный массив размера m x n, заполненный элементами x
function MatrGen<T>(m, n: integer; gen: (integer,integer)->T): array [,] of T;
        Возвращает двумерный массив размера m x n, заполненный элементами x
function MatrRandom(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer;
        Возвращает двумерный массив размера m x n, заполненный случайными целыми значениями
function MatrRandomInteger(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer;
        Возвращает двумерный массив размера m x n, заполненный случайными целыми значениями
function MatrRandomReal(m: integer := 5; n: integer := 5; a: real := 0; b: real := 10): array [,] of real;
        Возвращает двумерный массив размера m x n, заполненный случайными вещественными значениями
function ReadMatrInteger(m, n: integer): array [,] of integer;
        Возвращает матрицу m на n целых, введенных с клавиатуры
function ReadMatrReal(m, n: integer): array [,] of real;
        Возвращает матрицу m на n вещественных, введенных с клавиатуры
function Transpose<T>(a: array [,] of T): array [,] of T;
        Транспонирует двумерный массив